/********************************************************
*Implementacion de NodoCadena                           *
*Author     :   Simon Emmanuel Gutierrez Brida          *
*Version    :   0.1                                     *
*Fecha      :   Octubre/2011                            *
*------------------------------------------------------ *
*********************************************************/

#include <stdlib.h>
#include <stdio.h>
#include "nodopila.h"

LabelNEval* nuevoLabelNEval(char *label, Variable *eval) {
    LabelNEval *nuevo = (LabelNEval*) malloc(sizeof(LabelNEval));
    nuevo->label = label;
    nuevo->eval = eval;
    return nuevo;
}

NodoPila* nuevoNodoPila_vacio() {
    NodoPila *nuevo = (NodoPila*) malloc(sizeof(NodoPila));
    nuevo->info = NULL;
    nuevo->next = NULL;
    return nuevo;
}

NodoPila* nuevoNodoPila_info(char *info, Variable *eval) {
    NodoPila *nuevo = nuevoNodoPila_vacio();
    nuevo->info = nuevoLabelNEval(info, eval);
    return nuevo;
}

NodoPila* nuevoNodoPila_info_siguiente(char *info, Variable *eval, NodoPila *siguiente) {
    NodoPila *nuevo = nuevoNodoPila_info(info, eval);
    nuevo->next = siguiente;
    return nuevo;
}

LabelNEval* obtenerInfo_nodoPila(NodoPila *nodo) {
    return nodo->info;
}

NodoPila* obtenerSiguiente_nodoPila(NodoPila *nodo) {
    return nodo->next;
}

void definirInfo_nodoPila(NodoPila *nodo, char *info, Variable *eval) {
    nodo->info = nuevoLabelNEval(info, eval);;
}

void definirSiguiente_nodoPila(NodoPila *nodo, NodoPila *siguiente) {
    nodo->next = siguiente;
}